Supervised Learning মডেল তৈরি করার জন্য PyBrain একটি খুবই শক্তিশালী লাইব্রেরি। এই প্রক্রিয়ায়, আপনি ডেটাকে ইনপুট এবং আউটপুট পেয়ার হিসেবে ব্যবহার করে মডেল ট্রেনিং করতে পারবেন। PyBrain এর মাধ্যমে আপনি বিভিন্ন supervised learning অ্যালগরিদম ব্যবহার করতে পারেন, যেমন classification এবং regression। এখানে classification মডেলের উদাহরণ দেওয়া হবে, যা backpropagation অ্যালগরিদম ব্যবহার করে ট্রেনিং করা হবে।
১. Supervised Learning Overview
Supervised Learning হল একটি মেশিন লার্নিং প্রক্রিয়া যেখানে মডেল ইনপুট-আউটপুট পেয়ার দেখে শিখে এবং ভবিষ্যতে নতুন ইনপুটের জন্য আউটপুট অনুমান করতে সক্ষম হয়। দুটি সাধারণ ধরন হল:
- Classification: আউটপুট একটি নির্দিষ্ট শ্রেণী (Class) হিসেবে থাকে।
- Regression: আউটপুট একটি নিরবচ্ছিন্ন (Continuous) মান হিসেবে থাকে।
এই উদাহরণে, আমরা classification মডেল তৈরি করব।
২. PyBrain দিয়ে Classification মডেল তৈরি
২.১ ডেটা প্রস্তুতি
প্রথমে একটি সাধারণ XOR সমস্যা নিয়ে কাজ করব, যেখানে দুটি ইনপুট এবং একটি আউটপুট থাকবে। XOR এর জন্য আউটপুট হবে:
- যখন ইনপুট অথবা
- যখন ইনপুট অথবা
এখানে XOR Dataset ব্যবহার করব।
২.২ PyBrain ইনস্টলেশন
PyBrain ইনস্টল করা না থাকলে প্রথমে ইনস্টল করে নিন:
pip install pybrain
২.৩ ডেটাসেট তৈরি এবং মডেল ট্রেনিং
from pybrain.datasets import ClassificationDataSet
from pybrain.tools.shortcuts import buildNetwork
from pybrain.supervised.trainers import BackpropTrainer
import numpy as np
# XOR ডেটাসেট তৈরি
ds = ClassificationDataSet(2, 1, nb_classes=2)
# XOR ইনপুট এবং আউটপুট ডেটা
input_data = np.array([[0, 0], [0, 1], [1, 0], [1, 1]])
output_data = np.array([0, 1, 1, 0])
# ডেটাসেট পূর্ণ করা
for i in range(4):
ds.addSample(input_data[i], [output_data[i]])
# ডেটাসেট স্কেলিং (যেমন নিউরাল নেটওয়ার্কে ভালোভাবে কাজ করার জন্য)
ds._convertToOneOfMany()
# নিউরাল নেটওয়ার্ক তৈরি
network = buildNetwork(2, 3, 1)
# BackpropTrainer ব্যবহার করে ট্রেনিং করা
trainer = BackpropTrainer(network, dataset=ds)
trainer.trainEpochs(1000)
# ফলাফল দেখা
for inp, targ in zip(input_data, output_data):
print("Input:", inp, "Predicted Output:", network.activate(inp), "True Output:", targ)
কোড ব্যাখ্যা:
- ClassificationDataSet: এটি একটি ডেটাসেট তৈরি করার ক্লাস যা বিশেষভাবে ক্লাসিফিকেশন সমস্যার জন্য ব্যবহৃত হয়। এখানে 2 ইনপুট এবং 1 আউটপুট (বাইনারি ক্লাসিফিকেশন) ব্যবহার করা হয়েছে।
- addSample(): ইনপুট এবং আউটপুট যুক্ত করার জন্য ব্যবহার করা হয়।
- _convertToOneOfMany(): এই পদ্ধতি আউটপুট ডেটাকে one-hot এনকোডিং ফর্ম্যাটে রূপান্তরিত করে, যাতে এটি নিউরাল নেটওয়ার্কে ব্যবহার করা যায়।
- buildNetwork(): এটি একটি ফিডফরওয়ার্ড নিউরাল নেটওয়ার্ক তৈরি করে, যেখানে 2 ইনপুট, 3 হিডেন লেয়ার এবং 1 আউটপুট লেয়ার থাকে।
- BackpropTrainer: এই ট্রেনারটি নিউরাল নেটওয়ার্কটিকে ব্যাকপ্রোপাগেশন অ্যালগরিদম ব্যবহার করে ট্রেনিং দেয়।
- trainEpochs(): মডেলটি 1000 বার ট্রেনিং হয়।
২.৪ আউটপুট পরীক্ষা করা
আপনি যখন কোডটি রান করবেন, তখন এটি ইনপুট অনুযায়ী আউটপুট প্রদর্শন করবে এবং অনুমান করা আউটপুটের সাথে সঠিক আউটপুটের তুলনা করবে।
উদাহরণ আউটপুট:
Input: [0 0] Predicted Output: [0.012] True Output: 0
Input: [0 1] Predicted Output: [0.998] True Output: 1
Input: [1 0] Predicted Output: [0.998] True Output: 1
Input: [1 1] Predicted Output: [0.011] True Output: 0
এখানে, নিউরাল নেটওয়ার্কের আউটপুট খুব কাছাকাছি সঠিক আউটপুটের সাথে মিলেছে, যা মডেল সফলভাবে ট্রেনিং করেছে।
৩. মডেল পরীক্ষা এবং ফলাফল বিশ্লেষণ
মডেলটি সফলভাবে ট্রেনিং হয়েছে কিনা তা যাচাই করার জন্য আমরা ইনপুটের সাথে আউটপুট তুলনা করেছি। এটি বাইনারি ক্লাসিফিকেশন সমস্যা (XOR গেট) হিসাবে কাজ করছে, যেখানে 0 এবং 1 আউটপুট যথাযথভাবে তৈরি হয়েছে।
সারাংশ
- PyBrain ব্যবহার করে সহজেই Supervised Learning মডেল তৈরি করা সম্ভব।
- Backpropagation অ্যালগরিদম ব্যবহার করে নিউরাল নেটওয়ার্ক ট্রেনিং করা হয়।
- ClassificationDataSet এর মাধ্যমে ডেটা তৈরি করা হয় এবং BackpropTrainer দিয়ে মডেল ট্রেনিং করা হয়।
- XOR সমস্যা সমাধান করতে আমরা PyBrain দিয়ে একটি ছোট নিউরাল নেটওয়ার্ক তৈরি করেছি এবং সঠিক আউটপুট পেতে সক্ষম হয়েছি।
PyBrain এর মাধ্যমে আপনি খুব সহজেই supervised learning মডেল তৈরি করতে পারেন এবং আপনার ডেটার উপর ভিত্তি করে মডেল ট্রেনিং এবং টেস্টিং করতে পারবেন।
Read more